package server

type Showdown struct {
	Type  int
	Cards []Card
	P     *Player
}
type ShowdownSlice []Showdown

func (s ShowdownSlice) Len() int { // 重写 Len() 方法
	return len(s)
}
func (s ShowdownSlice) Swap(i, j int) { // 重写 Swap() 方法
	s[i], s[j] = s[j], s[i]
}
func (a ShowdownSlice) Less(i, j int) bool { // 重写 Less() 方法， 从大到小排序
	if a[j].Type == a[i].Type {
		iLen := len(a[i].Cards)
		jLen := len(a[j].Cards)
		min := min(iLen, jLen)
		for in := 0; in < min; in++ {
			if a[i].Cards[in].Number == a[j].Cards[in].Number {
				continue
			}
			if a[i].Cards[in].Number > a[j].Cards[in].Number {
				return 1 != a[j].Cards[in].Number
			} else {
				return false
			}
		}
	}
	return a[i].Type > a[j].Type
}

func min(a, b int) int {
	if a > b {
		return b
	} else {
		return a
	}
}
